package com;

public class SellTicket implements Runnable {//定义一个卖票类
    private int ticket = 100;//定义票的张数为100
    private Object obj = new Object();//创建任意对象
    private int x = 0;//定义一个变量

    @Override
    public void run() {//重写接口runnable中run方法
        while (true) {//使用while死循环进行卖票
            if (x % 2 == 0) {//对变量进行判断如果摩以2等于0则进入代码块
                synchronized (this) {//将任意对象作为参数
                    if (ticket > 0) {//如果票数大于0
                        try {//使用trycatch进行捕获异常
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "正在出售第" + ticket + "张票");//就在三个线程中卖出
                        ticket--;//
                    }
                }
            }else{
               sellTicket();
                x++;
            }
        }
    }

    private  synchronized  void sellTicket() {
        if (ticket > 0) {//如果票数大于0
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "正在出售第" + ticket + "张票");//就在三个线程中卖出
            ticket--;//
        }

    }
}
